﻿using System;
using System.Collections.Generic;
using System.Text;

namespace MyGeneric
{
    /// <summary>
    /// 1.装箱 拆箱性能损耗
    /// 泛型方法：方法名称后面加上尖括号，里面是类型参数
    ///     类型参数实际上就是一个类型T声明，方法就可以用这个类型T了
    ///     泛型声明方法时，并没有写死类型，
    ///     T要等着调用时才知道
    ///  设计思想--延迟声明：推迟一切可以推迟的，一切能晚点再做的事儿，就晚点再做
    ///  编译时-编译器，运行时-CLR/JIT
    ///  泛型方法的性能与普通方法一致是最好的
    ///  泛型缓存 类型生成不同的副本
    ///  泛型委托 一个委托，满足不同类型的需求
    ///  泛型类
    ///  泛型接口
    ///  基类约束 有约束才有权利
    ///  接口约束
    ///  引用类型约束 class null
    ///  值类型约束 struct default(T) 根据T的类型获取一个默认值
    ///  无参数构造函数 new()
    ///  
    ///  
    /// </summary>
    public class CommonMethod
    {
        public static void Show<T>(T tParameter)
        {
            Console.WriteLine($"This is {typeof(CommonMethod)},parameeter={tParameter.GetType().Name},type={tParameter}");
        }
        public void Get<T, S, Model, Hjw>(Hjw hjw)
        {
            //Model model = new Model();

        }
    }

}
